package com;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

public class JedisAPI {
    private static JedisPool jedisPool;
    static {
        JedisPoolConfig config=new JedisPoolConfig();
        config.setMaxTotal(50);  //链接池最大活动连接数
        config.setMaxIdle(10);   //连接池中的最大空闲连接数
        config.setMinIdle(7);    //连接池中最小空闲连接数
        config.setMaxWaitMillis(1000); //获取资源的等待时间
        config.setTestOnBorrow(true); //获取资源时是否验证资源的有效性

        //创建Jedis连接池
        jedisPool=new JedisPool(
                config,
                "127.0.0.1",
                6379,
                10000,
                "123456",
                0
        );
    } //static块结束
    public void destroy(){
        if(!(jedisPool==null||jedisPool.isClosed())){
            jedisPool.close(); //关闭连接池
        }
    }
    public boolean set(String key,String value){
        Jedis jedis=null;
        try {
            jedis=jedisPool.getResource();
            jedis.set(key,value);
            return true;
        }catch (Exception e){
            e.printStackTrace();
            return false;
        }finally {
            if(jedis!=null){
                jedis.close();
            }
        }
    }

    /**
     * 获取数据
     * @param key
     * @return
     */
    public String get(String key){
        String value=null;
        Jedis jedis=null;
        try {
            jedis=jedisPool.getResource(); //从池中获取Jedis实例
            value=jedis.get(key);
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            if(jedis!=null){
                jedis.close();
            }
        }
        return value;
    }
    public Long del(String key){
        Long count = new Long(0);
        Jedis jedis = null;
        try {
            jedis = jedisPool.getResource();
            count = jedis.del(key);
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            if(jedis!=null){
                jedis.close();
            }
        }
        return count;
    }
}
